package cn.itsource.ymcc.web.controller;

import cn.itsource.ymcc.domain.CourseDoc;
import cn.itsource.ymcc.repository.CourseElasticsearchRepository;
import cn.itsource.ymcc.result.JsonResult;
import cn.itsource.ymcc.service.ICourseESService;
import cn.itsource.ymcc.vo.CourseQueryVo;
import com.alibaba.fastjson.JSON;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.web.bind.annotation.*;

import java.util.List;
import java.util.Optional;

@RestController
public class CourseESController {
    @Autowired
    private CourseElasticsearchRepository courseElasticsearchRepository;
    @Autowired
    private ICourseESService iCourseESService;

    /**
     * 保存 上线的 课程
     * @param courseDocs
     * @return
     */
    @PostMapping("/saveCourseDocs")
    public JsonResult saveCourseDoc(@RequestBody List<CourseDoc> courseDocs){
        System.out.println(courseDocs);
        courseElasticsearchRepository.saveAll(courseDocs);
        return JsonResult.success();
    }

    /**
     * 查询课程
     * @return
     */
    @PostMapping("/search/queryCourse")
    public JsonResult query(@RequestBody CourseQueryVo courseQueryVo){
        return iCourseESService.query(courseQueryVo);
    }

    /**
     * 保存 下线的 课程
     * @return
     */
    @GetMapping("/deleteCourseDoc/{id}")
    public JsonResult deleteCourseDoc(@PathVariable("id")Long id){
        return JsonResult.success();
    }

    /**
     * 保存 下线的 课程
     * @return
     */
    @GetMapping("/queryOne/{id}")
    public JsonResult queryOne(@PathVariable("id")Long id){
        /*
          java的性特性 Optional 优雅的解决null异常
         */
        Optional<CourseDoc> byId = courseElasticsearchRepository.findById(id);
        CourseDoc courseDoc = byId.get(); //直接取
//        CourseDoc courseDoc1 = byId.orElseGet(CourseDoc::new);//取值
        return JsonResult.success().setData(JSON.toJSONString(courseDoc));
    }

}
